// 文件路径: src/main/java/com/macro/mall/tiny/modules/oms/service/CartService.java
package com.macro.mall.tiny.modules.oms.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.macro.mall.tiny.modules.oms.dto.CartChangeSkuParam;
import com.macro.mall.tiny.modules.oms.dto.CartListQueryParam;
import com.macro.mall.tiny.modules.oms.dto.CartParam;
import com.macro.mall.tiny.modules.oms.dto.CartUpdateParam;
import com.macro.mall.tiny.modules.oms.model.Cart;
import com.macro.mall.tiny.modules.oms.vo.CartItemVO;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.util.List;

/**
 * <p>
 * 购物车表 服务类
 * </p>
 *
 * @author macro
 * @since 2023-11-07
 */
public interface CartService extends IService<Cart> {

    /**
     * 获取用户购物车列表
     */
    List<Cart> list(Integer userId);
    /**
     * 根据查询条件分页获取用户购物车列表（包含商品信息）
     */
    Page<CartItemVO> pageListWithProductInfo(CartListQueryParam queryParam);

    /**
     * 添加商品到购物车
     */
    Integer addToCart(CartParam cartParam);

    /**
     * 更新购物车商品数量和备注
     */
    boolean updateCart(Integer cartId, CartUpdateParam updateParam);

    /**
     * 从购物车删除商品
     */
    boolean deleteFromCart(Integer cartId);

    /**
     * 更换购物车中的SKU
     */
    boolean changeSku(CartChangeSkuParam changeSkuParam);

    /**
     * 批量删除购物车项
     */
    boolean deleteBatch(List<Integer> cartIds);
    
    /**
     * 根据用户ID和SKU ID列表删除购物车项
     */
    boolean deleteByUserIdAndSkuIds(Integer userId, List<Integer> skuIds);
}